package com.grace.cms.search.lucene.document;

import org.apache.lucene.document.Document;

/**
 * 可搜索文档接口
 */
public interface SearchableDocument {
    
    /**
     * 将对象转换为Lucene Document
     * @return Document
     */
    Document toDocument();
    
    /**
     * 从Lucene Document转换为对象
     * @param document Lucene Document
     * @return SearchableDocument
     */
    static SearchableDocument fromDocument(Document document) {
        // 根据文档类型决定转换为哪种具体类型
        String type = document.get("type");
        if ("article".equals(type)) {
            return ArticleDocument.fromDocument(document);
        } else if ("category".equals(type)) {
            return CategoryDocument.fromDocument(document);
        } else if ("tag".equals(type)) {
            return TagDocument.fromDocument(document);
        }
        // 可以添加更多类型
        return null;
    }
}